home *** CD-ROM | disk | FTP | other *** search
/ Almathera Ten Pack 3: CDPD 3 / Almathera Ten on Ten - Disc 3: CDPD3.iso / fish / 001-100 / 001-025 / 024 / modula-2 / m2 / graphicdemo1.mod < prev    next >
Text File  |  1995-03-17  |  2KB  |  101 lines

  1. (********************************************************************************
  2.  
  3. Name         : GraphicDemo1.MOD
  4. Version      : 1.0
  5. Purpose      : Demo from AMIGA ROM Kernel Manual p. 8-29
  6. Authors      : ms
  7. Modified     : 1.4.86  12:35  ms
  8.  
  9. ********************************************************************************)
  10.  
  11. MODULE GraphicDemo1;
  12.  
  13. FROM SYSTEM    IMPORT ADR, ADDRESS, BYTE, INLINE;
  14. FROM System    IMPORT Allocate;
  15. FROM Terminal  IMPORT WriteString, WriteLn, Write, Read, BusyRead;
  16. FROM Graphics  IMPORT View, ViewPort, RasInfo, BitMap,
  17.                       OffDisplay, OnDisplay, InitView, InitBitMap, InitVPort,
  18.                       MakeVPort, MrgCop, LoadView;
  19.                IMPORT InOut;
  20.  
  21. CONST depth  =   5;
  22.       width  = 320;
  23.       height = 200;
  24.  
  25. TYPE PlanePtr = POINTER TO ARRAY [0..7999] OF BYTE;
  26.  
  27. VAR v:   View;
  28.     vp:  ViewPort;
  29.     ri:  RasInfo;
  30.     b:   BitMap;
  31.     i:   CARDINAL;
  32.     j0, j1, j2, j3, j4:   PlanePtr;
  33.  
  34. PROCEDURE AllocRaster(w, h: CARDINAL): ADDRESS;
  35. VAR p: ADDRESS;  size: CARDINAL;
  36. BEGIN
  37.   size:=SHIFT(w, -3)*h;
  38.   InOut.WriteHex(size, 8);
  39.   Allocate(p, SHIFT(w, -3)*h);
  40.   RETURN p
  41. END AllocRaster;
  42.  
  43. BEGIN  (* create and show a 320 by 200 by 5 display *)
  44.   OffDisplay;       (* turn things off while we are creating *)
  45.  
  46.   InitView(v);                         (* init view *)
  47.   v.viewPort:=ADR(vp);                 (* link viewport *)
  48.  
  49.   InitBitMap(b, depth, width, height); (* init bitmap *)
  50.  
  51.   FOR i:=0 TO depth-1 DO
  52.     b.planes[i]:=AllocRaster(width, height); WriteLn;
  53.     IF b.planes[i]=NIL THEN
  54.       WriteString('no memory for display'); WriteLn;
  55.       HALT
  56.     END
  57.   END;
  58.  
  59.   ri.bitMap:=ADR(b);
  60.   ri.rxOffset:=0;
  61.   ri.ryOffset:=0;
  62.   ri.next:=NIL;
  63.  
  64.   InitVPort(vp);
  65.  
  66.   vp.dWidth:=width;
  67.   vp.dHeight:=height;
  68.   vp.rasInfo:=ADR(ri);
  69.  
  70.   MakeVPort(v, vp);
  71.  
  72.   MrgCop(v);
  73.  
  74.   LoadView(v);
  75.  
  76.   OnDisplay;
  77.  
  78.   j0:=PlanePtr(b.planes[0]);
  79.   j1:=PlanePtr(b.planes[1]);
  80.   j2:=PlanePtr(b.planes[2]);
  81.   j3:=PlanePtr(b.planes[3]);
  82.   j4:=PlanePtr(b.planes[4]);
  83.   FOR i:=0 TO 1999 DO
  84.     j0^[i]:=BYTE(-1);
  85.     j1^[i]:=BYTE(0);
  86.     j2^[i]:=BYTE(0);
  87.     j3^[i]:=BYTE(0);
  88.     j4^[i]:=BYTE(0);
  89.   END;
  90.  
  91.   FOR i:=2000 TO 3999 DO
  92.     j0^[i]:=BYTE(0);
  93.     j1^[i]:=BYTE(-1);
  94.     j2^[i]:=BYTE(0);
  95.     j3^[i]:=BYTE(0);
  96.     j4^[i]:=BYTE(0);
  97.   END;
  98.  
  99. END GraphicDemo1.
  100.  
  101.